The present invention relates generally to information handling systems including computer systems and related devices and, more particularly, to a method and apparatus for identifying functional problems in a PCI-X design via iterative testing of PCI-X protocol.
Once a component of an information handling system has been designed, system designers may need to verify its operation to ensure that it operates as designed and that it interfaces properly with each of the other elements of the system.
In order to verify that each element of a newly designed system functions properly, system verification engineers may create a computer model of the system or components to be tested. Although simulation and design verification software reveal many problems, many designs must undergo lengthy and expensive debug phases before yielding fully operational, full specification parts.
A prior art method of system verification involves the use of exercisers/analyzers. Typically, an exerciser randomly selects operations to be performed or applied to the device under test. The advantage of using exercisers/analyzers is that they tend to provide more complete tests in a shorter time frame. The use of exercisers, however, is not without drawbacks. One problem associated with using random exercisers in a PCI-X environment is that it is typically a fully automated process with a high level of randomness and thus does not guarantee that a given condition or PCI-X protocol combination has been tested or that a system has been fully tested. It would, therefore, be desirable to provide an improved PCI-X verification method and apparatus that can be automated to provide iterative testing of all desired conditions or protocol combinations in a PCI-X system.
Accordingly, the present invention is directed to an improved PCI-X verification method and apparatus that can be automated to provide iterative testing of desired conditions or protocol combinations in a PCI-X system.
In one aspect, the present invention provides a method for the automatic testing of a PCI-X bus system in an information handling system, such as a computer system, comprising the steps of selecting a PCI-X command to be tested; programming a PCI-X requester to exhibit predetermined functional behavior during a PCI-X transaction; asserting the PCI-X command to initiate a PCI-X transaction, the transaction comprising transfer of data over the PCI-X bus; transferring at least a portion of the data; monitoring and recording the behavior of the PCI-X bus system; determining whether a PCI-X protocol error has occurred; if an error has occurred, logging the error and halting execution; repeating the process until it is determined that an error has occurred or until the PCI-X transaction is complete; and, if the PCI-X transaction is completed, writing data from a first memory location to a second memory location, reading data from the second memory location, and comparing data from the first memory location to data from the second memory location. In a further aspect, one or more commands may be tested in combination with one or more functional behavior parameters throughout a desired range of variable parameter values.
In another aspect, the present invention provides a method for the automatic testing of a PCI-X bus system in an information handling system comprising the steps of initializing a PCI or PCI-X completer device, which is programmable to exhibit predetermined functional behavior during a PCI-X transaction; programming the PCI or PCI-X completer device to exhibit the predetermined functional behavior during the PCI-X transaction; providing a PCI-X requester device, the PCI-X requester device comprising configuration address space, the configuration address space programmable to configure the PCI-X requester device; programming the configuration address space to provide a first set of PCI-X bus utilization properties for the PCI-X requester device; after the PCI-X completer device is programmed to exhibit the predetermined functional behavior, initiating the PCI-X transaction, the transaction comprising transfer of data over the PCI-X bus; transferring at least a portion of the data; monitoring and recording the behavior of the PCI-X bus system; determining whether a PCI-X protocol error has occurred; if an error has occurred, logging the error and halting execution; repeating the process until it is determined that an error has occurred or until the PCI-X transaction is complete; and, if the PCI-X transaction is complete, writing data from a first memory location to a second memory location, reading data from the second memory location, and comparing data from the first memory location to data from the second memory location. In a further aspect, one or more commands may be tested in combination with one or more functional behavior parameters throughout a desired range of variable parameter values.